export enum ProjectStatus {
  DRAFT = 11,
  APPLYING = 12,
  PREPARING = 13,
  BEGIN = 21,
  PAUSE = 22,
  STOP = 31,
  FINISH = 32,
  ABANDON = 41,
  DELETE = 99,
}

export const PROJECT_STATUS_MAP: any = {
  [ProjectStatus.DRAFT]: {
    label: '草稿',
    color: 'project-default',
  },
  [ProjectStatus.APPLYING]: {
    label: '申请中',
    color: 'project-processing',
  },
  [ProjectStatus.PREPARING]: {
    label: '准备中',
    color: 'project-ready',
  },
  [ProjectStatus.BEGIN]: {
    label: '运行中',
    color: 'project-processing',
  },
  [ProjectStatus.PAUSE]: {
    label: '暂停',
    color: 'project-stop',
  },
  [ProjectStatus.STOP]: {
    label: '终止',
    color: 'project-stop',
  },
  [ProjectStatus.FINISH]: {
    label: '已完成',
    color: 'project-success',
  },
  [ProjectStatus.ABANDON]: {
    label: '已废弃',
    color: 'project-end',
  },
  [ProjectStatus.DELETE]: {
    label: '已删除',
    color: 'project-default',
  },
};

type StrOrNull = string | undefined;
type NumOrNull = number | undefined;

// 项目组织项
export type ProjectOrgItem = {
  orgId: StrOrNull; // 组织ID
  orgName: StrOrNull; // 组织名称
  orgType: NumOrNull; // 组织类型
  orgContact?: string; // 联系人
  orgContactPhone?: string; // 联系电话
  assumeNumber?: number; // 本中心拟承担例数
  isGroupLeaderOrg: number; // 是否组长单位
};

// 项目项
export type ProjectItem = {
  projectBasicId?: StrOrNull;
  orgId: string; // 组织ID
  appId: string; // 所属应用id
  projectName: StrOrNull; // 项目名称
  productName?: StrOrNull; // 产品名称
  projectPlanNo: StrOrNull; // 试验方案编号
  projectNo: StrOrNull; // 项目编号
  approvalNo?: StrOrNull; // 临床批件号
  recordNo?: StrOrNull; // 备案号
  projectTypeValue: StrOrNull; // 试验类型ID
  projectType: StrOrNull; // 试验类型
  drugRegisterValue: StrOrNull; // 注册分类ID
  drugRegister: StrOrNull; // 注册分类
  stages: StrOrNull; // 试验分期
  stagesValue?: StrOrNull; // 试验分期
  treatmentArea: StrOrNull; // 治疗领域
  treatmentAreaValue?: StrOrNull; // 治疗领域
  projectRangeId: StrOrNull; // 项目范围ID
  projectRange: StrOrNull; // 项目范围
  projectRangeValue?: StrOrNull; // 项目范围
  designNumber?: number; // 试验总设计例数
  projectOrgList?: Array<ProjectOrgItem>; // 项目组织列表
  projectProfessionList: Array<ProfessionItem>; // 组织专业页表
  operType: number; // 操作类型 1-添加 2-引用,
  projectCreateType: number; //项目创建方式，1-直接创建 2-申请创建
  currentOrgInfo: ProjectOrgItem; // 当前组织信息
  sponsorOrgs: Array<ProjectOrgItem>; // 申办方组织列表
  croOrgInfo: ProjectOrgItem; // CRO
  smoOrgInfo: ProjectOrgItem; // SMO,
  isLeader: boolean; // 是否组长单位
  leaderProfessioInfo: ProfessionItem; // 组长单位
  leaderOrgInfo: ProjectOrgItem; // 组长单位
  projectStatus?: number; // 项目状态
  project?: any; // 项目信息
};

export enum orgTypeEnum {
  ADMIN,
  RESEARCH_INSTITUTIONS,
  EHTIC,
  SPONSOR,
  CRO,
  SMO,
}

// 主要研究者
export type ProfessionItem = {
  piType: number; // 研究者类型（研究者类型，1-承担专业的研究者 2-组长单位的研究者）
  piName?: string; // 主要研究者
  piId?: string; // 主要研究者ID
  piTitle?: string; // 主要研究者职称
  departmentName?: string; // 主要研究者
  departmentId?: string; // 专业科室ID
  piSelectoptions: any[]; // 选择的主要研究者 页面选择用，不提交的'
  isInit?: false; // 是否初始化
};

export const sourceOrg = (
  orgType?: NumOrNull,
  isLeader = 0
): ProjectOrgItem => {
  return {
    orgId: undefined, // 组织ID
    orgName: undefined, // 组织名称
    orgType, // 组织类型
    orgContact: undefined, // 联系人
    orgContactPhone: undefined, // 联系电话
    assumeNumber: 0, // 本中心拟承担例数
    isGroupLeaderOrg: isLeader, // 是否组长单位
  };
};

export const sourceProfession = (piType = 1): ProfessionItem => {
  return {
    piType, // 研究者类型（研究者类型，1-承担专业的研究者 2-组长单位的研究者）
    piName: '', // 主要研究者
    piId: '', // 主要研究者ID
    piTitle: '', // 主要研究者职称
    departmentId: '', // 专业科室ID
    piSelectoptions: [],
  };
};

export const source = (asyncUser: any): ProjectItem => {
  let currentOrgInfo = sourceOrg();
  if (asyncUser.getOrgInfo) {
    const { orgId, orgName, orgType } = asyncUser.getOrgInfo;
    currentOrgInfo = { orgId, orgName, orgType, isGroupLeaderOrg: 0 };
  }
  const data: ProjectItem = {
    orgId: asyncUser.orgId, // 组织ID
    appId: '', // 所属应用id
    projectName: undefined, // 项目名称
    productName: undefined, // 产品名称
    projectPlanNo: undefined, // 试验方案编号
    projectNo: undefined, // 项目编号
    approvalNo: undefined, // 临床批件号
    recordNo: undefined, // 备案号
    projectTypeValue: undefined, // 试验类型ID
    projectType: undefined, // 试验类型
    drugRegisterValue: undefined, // 注册分类ID
    drugRegister: undefined, // 注册分类
    stagesValue: undefined, // 试验分期
    stages: undefined, // 试验分期
    treatmentAreaValue: undefined, // 治疗领域ID
    treatmentArea: undefined, // 治疗领域
    projectRangeValue: undefined, // 项目范围ID
    projectRange: undefined, // 项目范围
    designNumber: 0, // 试验总设计例数
    projectOrgList: [], // 项目组织列表
    projectProfessionList: [sourceProfession()], // 组织专业页表
    leaderProfessioInfo: sourceProfession(), // 组长单位专业信息
    operType: 1, // 操作类型 1-添加 2-引用
    projectCreateType: 1, //项目创建方式，1-直接创建 2-申请创建
    currentOrgInfo, // 当前组织信息
    sponsorOrgs: [sourceOrg(orgTypeEnum.SPONSOR)], // 申办方
    croOrgInfo: sourceOrg(orgTypeEnum.CRO),
    smoOrgInfo: sourceOrg(orgTypeEnum.SMO),
    projectRangeId: undefined, // 项目范围ID
    isLeader: false,
    leaderOrgInfo: sourceOrg(orgTypeEnum.RESEARCH_INSTITUTIONS, 1), // 组长单位信息
  };
  return data;
};
